Skip to content

fix(extract): resolve Java member calls by receiver type#1697

Open
oleksii-tumanov wants to merge 2 commits into
Graphify-Labs:v8from
oleksii-tumanov:fix/java-receiver-resolution
Open

fix(extract): resolve Java member calls by receiver type#1697
oleksii-tumanov wants to merge 2 commits into
Graphify-Labs:v8from
oleksii-tumanov:fix/java-receiver-resolution

Conversation

@oleksii-tumanov

@oleksii-tumanov oleksii-tumanov commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • preserve the receiver and static receiver type for Java member calls
  • resolve explicit type receivers, current-class fields, parameters, and typed locals with method-scoped bindings; skip ambiguous, inherited, and chained receivers

Fixes #1696

Result

Label-normalized call edges:

run -> PaymentGateway.ping [EXTRACTED]
run -> PaymentGateway.charge [INFERRED]

The three charge() calls deduplicate to one edge, and no edge targets the same-named AuditLog methods.

Testing

  • uv run --frozen pytest tests/test_languages.py tests/test_java_type_resolution.py tests/test_java_member_calls.py -q -k java (37 passed, 310 deselected)
  • uv run --frozen pytest tests/ -q --tb=short (3125 passed, 4 skipped)
  • uv run --frozen ruff check graphify/extract.py graphify/extractors/engine.py tests/test_java_member_calls.py (passed)

@oleksii-tumanov oleksii-tumanov force-pushed the fix/java-receiver-resolution branch from b1d04a6 to 74b0cd1 Compare July 9, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Java member calls lose receiver type information

1 participant